package cn.yrec.rain.analysis.service;


import cn.yrec.rain.analysis.model.HyQHourRt;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 描述:
 *  水文站业务层接口
 * @createDate: 2020/08/24 下午 10:55:13
 * @author: yanglichen
 */
public interface HyQHourRtService {

    /**
     * 方法描述: 根据站码和起止时间得到这段时间内的数据
     * @author yanglichen
     * @date 2020-08-24 23:19
     * @param stcd 站码
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @return 结果集
     **/
    List<HyQHourRt> findByStcdAndDate(String stcd, Date startDate, Date endDate);

    /**
     * 方法描述: 得到最大流量实例
     * @author yanglichen
     * @date 2020-08-24 23:26
     * @param hyQHourRtList 时段的结果集
     * @return 最大流量实例
     **/
    HyQHourRt getMaxFlowEntity(List<HyQHourRt> hyQHourRtList);

    /**
     * 方法描述: 得到最大含沙量实例
     * @author yanglichen
     * @date 2020-08-24 23:26
     * @param hyQHourRtList 时段的结果集
     * @return 最大含沙量实例
     **/
    HyQHourRt getMaxQsEntity(List<HyQHourRt> hyQHourRtList);

    /**
     * 方法描述: 得到时段的水位数据
     * @author yanglichen
     * @date 2020-08-25 00:06
     * @param hyQHourRtList 查询的结果
     * @return 时段的水位数据
     **/
    List<Double> getDateFlow(List<HyQHourRt> hyQHourRtList);

    /**
     * 方法描述: 得到时段的流量数据(日)
     * @author yanglichen
     * @date 2020-08-25 08:48
     * @param hyQHourRtList 查询的结果
     * @return 时段的流量数据(日)
     **/
    List<Double> getDateFlowByDate(List<HyQHourRt> hyQHourRtList);

    /**
     * 方法描述: 得到时段的含沙量数据
     * @author yanglichen
     * @date 2020-08-25 00:06
     * @param hyQHourRtList 查询的结果
     * @return 时段的含沙量数据
     **/
    List<Double> getDateQs(List<HyQHourRt> hyQHourRtList);

    /**
     * 方法描述: 得到时段的含沙量数据(日)
     * @author yanglichen
     * @date 2020-08-25 08:48
     * @param hyQHourRtList 查询的结果
     * @return 时段的含沙量数据(日)
     **/
    List<Double> getDateQsByDate(List<HyQHourRt> hyQHourRtList);

    /**
     * 方法描述: 得到时间范围
     * @author yanglichen
     * @date 2020-08-25 00:12
     * @param hyQHourRtList 查询的结果
     * @return 时间范围
     **/
    List<String> getTimeZone(List<HyQHourRt> hyQHourRtList);
    
    /**
     * 方法描述: 得到总水量
     * @author yanglichen
     * @date 2020-08-25 00:29
     * @param hyQHourRtList 查询的结果
     * @return 总水量
     **/
    Double getTotalQ(List<HyQHourRt> hyQHourRtList);

    /**
     * 方法描述: 得到总含沙量
     * @author yanglichen
     * @date 2020-08-25 00:29
     * @param hyQHourRtList 查询的结果
     * @return 总含沙量
     **/
    Double getTotalQs(List<HyQHourRt> hyQHourRtList);

    /**
     * 方法描述: 得到时段流量数据
     * @author yanglichen
     * @date 2020-08-28 08:48
     * @param hyQHourRtList 查询的结果
     * @return 时段流量数据格式: [{"value":["2020-8-1 8:00", "23.123"], {"value":["2020-8-2 8:00", "43.123"], ]
     **/
    Map<String, Object> getTimeFlow(List<HyQHourRt> hyQHourRtList);

    /**
     * 方法描述: 得到时段流量数据
     * @author yanglichen
     * @date 2020-08-28 08:48
     * @param hyQHourRtList 查询的结果
     * @return 时段流量
     **/
    Map<String, Object> getTimeQs(List<HyQHourRt> hyQHourRtList);



}
